package com.eps.tesoreria.Entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.eps.entity.Tipo;

/**
 *
 * @author Renato
 */
@Entity
@Table(name = "pago_caja")
@NamedQueries({
    @NamedQuery(name = "PagoCaja.findAll", query = "SELECT p FROM PagoCaja p"),
    @NamedQuery(name = "PagoCaja.findByNroInscripcion", query = "SELECT p FROM PagoCaja p WHERE p.pagoCajaPK.nroInscripcion = :nroInscripcion"),
    @NamedQuery(name = "PagoCaja.findByIdZonaRecibo", query = "SELECT p FROM PagoCaja p WHERE p.pagoCajaPK.idZonaRecibo = :idZonaRecibo"),
    @NamedQuery(name = "PagoCaja.findByIdLocalidadRecibo", query = "SELECT p FROM PagoCaja p WHERE p.pagoCajaPK.idLocalidadRecibo = :idLocalidadRecibo"),
    @NamedQuery(name = "PagoCaja.findBySerie", query = "SELECT p FROM PagoCaja p WHERE p.pagoCajaPK.serie = :serie"),
    @NamedQuery(name = "PagoCaja.findByNumero", query = "SELECT p FROM PagoCaja p WHERE p.pagoCajaPK.numero = :numero"),
    @NamedQuery(name = "PagoCaja.findByImporte", query = "SELECT p FROM PagoCaja p WHERE p.importe = :importe"),
    @NamedQuery(name = "PagoCaja.findByFechaPago", query = "SELECT p FROM PagoCaja p WHERE p.fechaPago = :fechaPago"),
    @NamedQuery(name = "PagoCaja.findByIdZonaCajero", query = "SELECT p FROM PagoCaja p WHERE p.idZonaCajero = :idZonaCajero"),
    @NamedQuery(name = "PagoCaja.findByIdLocalidadCajero", query = "SELECT p FROM PagoCaja p WHERE p.idLocalidadCajero = :idLocalidadCajero"),
    @NamedQuery(name = "PagoCaja.findByIdCajaOperacionBancaria", query = "SELECT p FROM PagoCaja p WHERE idCajaoperacionbancaria = :idCajaoperacionbancaria"),})
public class PagoCaja implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected PagoCajaPK pagoCajaPK;
    @Basic(optional = false)
    @Column(name = "importe")
    private BigDecimal importe;
    @Column(name = "fecha_pago")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaPago;
    @Column(name = "id_zona_cajero")
    private String idZonaCajero;
    @Column(name = "id_localidad_cajero")
    private String idLocalidadCajero;
    @Column(name = "ID_CAJAOPERACIONBANCARIA")
    private String idCajaoperacionbancaria;
    @JoinColumn(name = "id_tipo_pago", referencedColumnName = "id_tabla_tipo")
    @ManyToOne
    private Tipo idTipoPago;
    private String usuario;

    public PagoCaja() {
    }

    public PagoCaja(PagoCajaPK pagoCajaPK) {
        this.pagoCajaPK = pagoCajaPK;
    }

    public PagoCaja(PagoCajaPK pagoCajaPK, BigDecimal importe) {
        this.pagoCajaPK = pagoCajaPK;
        this.importe = importe;
    }

    public PagoCaja(String nroInscripcion, String idZonaRecibo, String idLocalidadRecibo, String serie, String numero) {
        this.pagoCajaPK = new PagoCajaPK(nroInscripcion, idZonaRecibo, idLocalidadRecibo, serie, numero);
    }

    public PagoCajaPK getPagoCajaPK() {
        return pagoCajaPK;
    }

    public void setPagoCajaPK(PagoCajaPK pagoCajaPK) {
        this.pagoCajaPK = pagoCajaPK;
    }

    public BigDecimal getImporte() {
        return importe;
    }

    public void setImporte(BigDecimal importe) {
        this.importe = importe;
    }

    public Date getFechaPago() {
        return fechaPago;
    }

    public void setFechaPago(Date fechaPago) {
        this.fechaPago = fechaPago;
    }

    public String getIdZonaCajero() {
        return idZonaCajero;
    }

    public void setIdZonaCajero(String idZonaCajero) {
        this.idZonaCajero = idZonaCajero;
    }

    public String getIdLocalidadCajero() {
        return idLocalidadCajero;
    }

    public void setIdLocalidadCajero(String idLocalidadCajero) {
        this.idLocalidadCajero = idLocalidadCajero;
    }

    public String getIdCajaoperacionbancaria() {
        return idCajaoperacionbancaria;
    }

    public void setIdCajaoperacionbancaria(String idCajaoperacionbancaria) {
        this.idCajaoperacionbancaria = idCajaoperacionbancaria;
    }

    public Tipo getIdTipoPago() {
        return idTipoPago;
    }

    public void setIdTipoPago(Tipo idTipoPago) {
        this.idTipoPago = idTipoPago;
    }

    
    public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	@Override
    public int hashCode() {
        int hash = 0;
        hash += (pagoCajaPK != null ? pagoCajaPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof PagoCaja)) {
            return false;
        }
        PagoCaja other = (PagoCaja) object;
        if ((this.pagoCajaPK == null && other.pagoCajaPK != null) || (this.pagoCajaPK != null && !this.pagoCajaPK.equals(other.pagoCajaPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.eps.tesoreria.Entity.PagoCaja[pagoCajaPK=" + pagoCajaPK + "]";
    }

}
